gusucode.com > 耐品图片管理系统 标准版A > 耐品图片管理系统 标准版A/Admin_ClassOrderN.asp
<!--#include file="Admin_ChkPurview.asp"--> <% '=============================================================== ' 著作权号:中国国家版权局著作权登记号2004SR07385 ' 版权所有:深圳市耐品科技开发有限公司 www.naipin.com ' 联系电话:0755-26611119 81234844 81234845 ' 联系手机:13316911914 ' 联系邮箱:naipin@naipin.com '=============================================================== sub UpOrder() dim sqlOrder,rsOrder,MoveNum,ID,i dim ParentID,OrderID,ParentPath,Child,PrevID,NextID ID=Trim(request("ID")) MoveNum=trim(request("MoveNum")) if ID="" then FoundErr=true ErrMsg=ErrMsg & "<br><li>错误参数!</li>" else ID=CLng(ID) end if if MoveNum="" then FoundErr=true ErrMsg=ErrMsg & "<br><li>错误参数!</li>" else MoveNum=Cint(MoveNum) if MoveNum=0 then FoundErr=True ErrMsg=ErrMsg & "<br><li>请选择要提升的数字!</li>" end if end if if FoundErr=True then exit sub end if dim sql,rs,oldorders,ii,trs,tOrderID '要移动的分类信息 set rs=conn.execute("select ParentID,OrderID,ParentPath,child,PrevID,NextID From NT_ClassName where ID="&ID) ParentID=rs(0) OrderID=rs(1) ParentPath=rs(2) & "," & ID child=rs(3) PrevID=rs(4) NextID=rs(5) rs.close set rs=nothing if child>0 then set rs=conn.execute("select count(*) From NT_ClassName where ParentPath like '%"&ParentPath&"%'") oldorders=rs(0) rs.close set rs=nothing else oldorders=0 end if '先修改上一分类的NextID和下一分类的PrevID if PrevID>0 then conn.execute "update NT_ClassName set NextID=" & NextID & " where ID=" & PrevID end if if NextID>0 then conn.execute "update NT_ClassName set PrevID=" & PrevID & " where ID=" & NextID end if '和该分类同级且排序在其之上的分类------更新其排序,范围为要提升的数字 sql="select ID,OrderID,child,ParentPath,PrevID,NextID From NT_ClassName where ParentID="&ParentID&" and OrderID<"&OrderID&" order by OrderID desc" set rs=server.CreateObject("adodb.recordset") rs.open sql,conn,1,3 i=1 do while not rs.eof tOrderID=rs(1) 'conn.execute("update NT_ClassName set OrderID="&tOrderID+oldorders+i&" where ID="&rs(0)) rs(1) = tOrderID+oldorders+i if rs(2)>0 then ii=i+1 set trs=conn.execute("select ID,OrderID From NT_ClassName where ParentPath like '%"&rs(3)&","&rs(0)&"%' order by OrderID") if not (trs.eof and trs.bof) then do while not trs.eof if rs(0)&"" = trs(0)&"" then rs(1) = tOrderID+oldorders+ii else conn.execute("update NT_ClassName set OrderID="&tOrderID+oldorders+ii&" where ID="&trs(0)) end if ii=ii+1 trs.movenext loop end if trs.close set trs=nothing end if i=i+1 if i>MoveNum then rs(4)=ID rs.update conn.execute("update NT_ClassName set NextID=" & rs(0) & " where ID=" & ID) exit do end if rs.update rs.movenext loop rs.movenext if rs.eof then conn.execute("update NT_ClassName set PrevID=0 where ID=" & ID) else rs(5)=ID rs.update conn.execute("update NT_ClassName set PrevID=" & rs(0) & " where ID=" & ID) end if rs.close set rs=nothing '更新所要排序的分类的序号 conn.execute("update NT_ClassName set OrderID="&tOrderID&" where ID="&ID) '如果有下属分类,则更新其下属分类排序 if child>0 then i=1 set rs=conn.execute("select ID From NT_ClassName where ParentPath like '%"&ParentPath&"%' order by OrderID") do while not rs.eof conn.execute("update NT_ClassName set OrderID="&tOrderID+i&" where ID="&rs(0)) i=i+1 rs.movenext loop rs.close set rs=nothing end if end sub sub DownOrder() dim sqlOrder,rsOrder,MoveNum,ID,i dim ParentID,OrderID,ParentPath,Child,PrevID,NextID ID=Trim(request("ID")) MoveNum=trim(request("MoveNum")) if ID="" then FoundErr=true ErrMsg=ErrMsg & "<br><li>错误参数!</li>" exit sub else ID=Cint(ID) end if if MoveNum="" then FoundErr=true ErrMsg=ErrMsg & "<br><li>错误参数!</li>" exit sub else MoveNum=Cint(MoveNum) if MoveNum=0 then FoundErr=True ErrMsg=ErrMsg & "<br><li>请选择要下降的数字!</li>" exit sub end if end if dim sql,rs,oldorders,ii,trs,tOrderID '要移动的分类信息 set rs=conn.execute("select ParentID,OrderID,ParentPath,child,PrevID,NextID From NT_ClassName where ID="&ID) ParentID=rs(0) OrderID=rs(1) ParentPath=rs(2) & "," & ID child=rs(3) PrevID=rs(4) NextID=rs(5) rs.close set rs=nothing '先修改上一分类的NextID和下一分类的PrevID if PrevID>0 then conn.execute "update NT_ClassName set NextID=" & NextID & " where ID=" & PrevID end if if NextID>0 then conn.execute "update NT_ClassName set PrevID=" & PrevID & " where ID=" & NextID end if '和该分类同级且排序在其之下的分类------更新其排序,范围为要下降的数字 sql="select ID,OrderID,child,ParentPath,PrevID,NextID From NT_ClassName where ParentID="&ParentID&" and OrderID>"&OrderID&" order by OrderID" set rs=server.CreateObject("adodb.recordset") rs.open sql,conn,1,3 i=0 '同级分类 ii=0 '同级分类和子分类 do while not rs.eof 'conn.execute("update NT_ClassName set OrderID="&OrderID+ii&" where ID="&rs(0)) rs(1) = OrderID+ii if rs(2)>0 then set trs=conn.execute("select ID,OrderID From NT_ClassName where ParentPath like '%"&rs(3)&","&rs(0)&"%' order by OrderID") if not (trs.eof and trs.bof) then do while not trs.eof ii=ii+1 if rs(0)&""=trs(0)&"" then rs(1) = OrderID+ii else conn.execute("update NT_ClassName set OrderID="&OrderID+ii&" where ID="&trs(0)) end if trs.movenext loop end if trs.close set trs=nothing end if ii=ii+1 i=i+1 if i>=MoveNum then rs(5)=ID rs.update conn.execute("update NT_ClassName set PrevID=" & rs(0) & " where ID=" & ID) exit do end if rs.update rs.movenext loop rs.movenext if rs.eof then conn.execute("update NT_ClassName set NextID=0 where ID=" & ID) else rs(4)=ID rs.update conn.execute("update NT_ClassName set NextID=" & rs(0) & " where ID=" & ID) end if rs.close set rs=nothing '更新所要排序的分类的序号 conn.execute("update NT_ClassName set OrderID="&OrderID+ii&" where ID="&ID) '如果有下属分类,则更新其下属分类排序 if child>0 then i=1 set rs=conn.execute("select ID From NT_ClassName where ParentPath like '%"&ParentPath&"%' order by OrderID") do while not rs.eof conn.execute("update NT_ClassName set OrderID="&OrderID+ii+i&" where ID="&rs(0)) i=i+1 rs.movenext loop rs.close set rs=nothing end if end sub %> <html> <head> <title>N级分类重新排序</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <% Behind.WriteHtmlHead Title="图 片 N 级 分 类 排 序" Link="<a href='Admin_Class.asp' class='black'>管理分类</a> | <a href='Admin_ClassAdd.asp' class='black'>添加分类</a> | <a href='Admin_ClassOrder.asp' class='black'>分类排序</a>" Behind.WriteHtmlTop Title,Link dim Action Action=trim(request("Action")) if Action="UpOrder" then call UpOrder() elseif Action="DownOrder" then call DownOrder() end if if FoundErr=True then Behind.WriteErrMsg(ErrMsg) else call main() end if sub main() dim sqlClass,rsClass,i,iCount,trs,UpMoveNum,DownMoveNum sqlClass="select * From NT_ClassName order by RootID,OrderID" set rsClass=server.CreateObject("adodb.recordset") rsClass.open sqlClass,conn,1,1 %> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="1" class="border"> <tr class="title"> <td colspan="4" align="center" class="tdbg1"><strong>N级分类重新排序</strong></td> </tr> <% do while not rsClass.eof %> <tr class="tdbg" onMouseOut="this.style.backgroundColor=''" onMouseOver="this.style.backgroundColor='#EBEBEB'"> <td width="300"> <%iDepth=rsClass("iDepth") rsChild=rsClass("Child") if iDepth>0 then if rsClass("NextID")>0 then for i=1 to iDepth-1 response.write("<font color='#ECE597'>网j</font>") next response.write "<img src='images/tree_line1.gif' width='17' height='16' valign='abvmiddle'>" else for i=1 to iDepth-1 response.write("<font color='#ECE597'>网j</font>") next response.write "<img src='images/tree_line2.gif' width='17' height='16' valign='abvmiddle'>" end if end if if rsChild>0 then response.write "<img src='Images/tree_folder4.gif' width='15' height='15' valign='abvmiddle'>" else response.write "<img src='Images/tree_folder3.gif' width='15' height='15' valign='abvmiddle'>" end if response.write rsClass("ClassName") if rsChild>0 then response.write "(" & rsChild & ")" end if%></td> <% if rsClass("ParentID")>0 then '如果不是一级分类,则算出相同深度的分类数目,得到该分类在相同深度的分类中所处位置(之上或者之下的分类数) '所能提升最大幅度应为For i=1 to 该版之上的版面数 set trs=conn.execute("select count(ID) From NT_ClassName where ParentID="&rsClass("ParentID")&" and OrderID<"&rsClass("OrderID")&"") UpMoveNum=trs(0) if isnull(UpMoveNum) then UpMoveNum=0 if UpMoveNum>0 then response.write "<form action='Admin_ClassOrderN.asp?Action=UpOrder' method='post'><td width='150'>" response.write "<select name=MoveNum size=1><option value=0>向上移动</option>" for i=1 to UpMoveNum response.write "<option value="&i&">"&i&"</option>" next response.write "</select>" response.write "<input type=hidden name=ID value="&rsClass("ID")&"> <input type=submit name=Submit value=修改>" response.write "</td></form>" else response.write "<td width='150'> </td>" end if trs.close '所能降低最大幅度应为For i=1 to 该版之下的版面数 set trs=conn.execute("select count(ID) From NT_ClassName where ParentID="&rsClass("ParentID")&" and orderID>"&rsClass("orderID")&"") DownMoveNum=trs(0) if isnull(DownMoveNum) then DownMoveNum=0 if DownMoveNum>0 then response.write "<form action='Admin_ClassOrderN.asp?Action=DownOrder' method='post'><td width='150'>" response.write "<select name=MoveNum size=1><option value=0>向下移动</option>" for i=1 to DownMoveNum response.write "<option value="&i&">"&i&"</option>" next response.write "</select>" response.write "<input type=hidden name=ID value="&rsClass("ID")&"> <input type=submit name=Submit value=修改>" response.write "</td></form>" else response.write "<td width='150'> </td>" end if trs.close else response.write "<td colspan=2> </td>" end if %> <td> </td> </tr> <% UpMoveNum=0 DownMoveNum=0 rsClass.movenext loop %> </table> <% Behind.WriteHtmlEnd rsClass.close set rsClass=nothing end sub %>